/* 
 * File:   TrabajoTest.cpp
 * Author: max
 *
 * Created on Apr 28, 2013, 10:00:22 PM
 */

#include <stdlib.h>
#include <iostream>
#include <fstream>
#include "client_Trabajo.h"

using namespace TP::Criptografia;

/*
 * Simple C++ Test Suite
 */

void test1() {
    std::cout << "TrabajoTest test 1" << std::endl;

    try
    {
        ifstream input ("/home/Max/facultad/75.42.TPS/75.42.TP4.2013.1/Fuentes/75.42.TP4.2013.1/GrupoTaller/basic.tmp");

        if (!input.is_open()) throw 1;
        
        string data;
        char buffer [255];
        
        while (!input.eof())
        {
            bzero (buffer, 256);
            input.read (buffer, 255);
            data += buffer;
        }

        Trabajo trabajo;
        trabajo.setData(data);
        
        string aux = "1";
        trabajo.setNumeroProceso(aux);

        aux = "3";
        trabajo.setLongitudClave(aux);
        
        aux = "0";
        string aux2 = "999";
        
        trabajo.setRangoClaves(aux, aux2);

        if (trabajo.habilitado())
        {
            trabajo.iniciar();

            while (trabajo.quedanClaves())
            {
                string* clave = trabajo.getClave();
                if (NULL != clave)
                {
                    cout << endl << "Posible clave: " << *clave << endl;
                    delete clave;
                }
            }
            cout << endl << "Trabajo finalizado (proceso " << trabajo.getNumeroProceso() << ")." << endl;
        }
        
    }
    catch (int ex)
    {
        if ( 1 == ex)
            std::cout << "%TEST_FAILED% time=0 testname=test2 (TrabajoTest) message=no se puede abrir el archivo de datos." << std::endl;            
    }
    
}

void test2() {
    std::cout << "TrabajoTest test 2" << std::endl;
    std::cout << "%TEST_FAILED% time=0 testname=test2 (TrabajoTest) message=error message sample" << std::endl;
}

int main(int argc, char** argv) {
    std::cout << "%SUITE_STARTING% TrabajoTest" << std::endl;
    std::cout << "%SUITE_STARTED%" << std::endl;

    std::cout << "%TEST_STARTED% test1 (TrabajoTest)" << std::endl;
    test1();
    std::cout << "%TEST_FINISHED% time=0 test1 (TrabajoTest)" << std::endl;
/*
    std::cout << "%TEST_STARTED% test2 (TrabajoTest)\n" << std::endl;
    test2();
    std::cout << "%TEST_FINISHED% time=0 test2 (TrabajoTest)" << std::endl;
*/
    std::cout << "%SUITE_FINISHED% time=0" << std::endl;

    return (EXIT_SUCCESS);
}

